package org.finir.fakturisanje.business.service;

import java.util.List;

import org.finir.fakturisanje.business.core.GenerickiEAO;
import org.finir.fakturisanje.persistence.Faktura;
import org.finir.fakturisanje.persistence.Komitent;
import org.finir.fakturisanje.persistence.Preduzece;
import org.finir.fakturisanje.persistence.Usluga;

@SuppressWarnings("unchecked")
public class KontrolerALImpl implements KontrolerAL {

	private SacuvajEntitet sacuvajEntitet;
	private IzmeniEntitet izmeniEntitet;

	private ObrisiEntitet obrisiEntitet;

	private VratiListuEntiteta vratiListuEntiteta;

	private VratiListuFaktura vratiListuFaktura;
	private VratiListuKomitenata vratiListuKomitenata;

	private VratiListuUsluga vratiListuUsluga;

	private VratiNoviBrojFakture vratiNoviBrojFakture;

	private LogovanjePreduzeca logovanjePreduzeca;

	private SpojObjekat spojObjekat;

	private StampanjeFakture stampanjeFakture;

	public StampanjeFakture getStampanjeFakture() {
		return stampanjeFakture;
	}

	public void setStampanjeFakture(StampanjeFakture stampanjeFakture) {
		this.stampanjeFakture = stampanjeFakture;
	}

	public SpojObjekat getSpojObjekat() {
		return spojObjekat;
	}

	public void setSpojObjekat(SpojObjekat spojObjekat) {
		this.spojObjekat = spojObjekat;
	}

	public VratiNoviBrojFakture getVratiNoviBrojFakture() {
		return vratiNoviBrojFakture;
	}

	public void setVratiNoviBrojFakture(
			VratiNoviBrojFakture vratiNoviBrojFakture) {
		this.vratiNoviBrojFakture = vratiNoviBrojFakture;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getLogovanjePreduzeca
	 * ()
	 */
	public LogovanjePreduzeca getLogovanjePreduzeca() {
		return logovanjePreduzeca;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setLogovanjePreduzeca
	 * (org.finir.fakturisanje.business.service.LogovanjePreduzeca)
	 */
	public void setLogovanjePreduzeca(LogovanjePreduzeca logovanjePreduzeca) {
		this.logovanjePreduzeca = logovanjePreduzeca;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getSacuvajEntitet()
	 */
	public SacuvajEntitet getSacuvajEntitet() {
		return sacuvajEntitet;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setSacuvajEntitet
	 * (org.finir.fakturisanje.business.service.SacuvajEntitet)
	 */
	public void setSacuvajEntitet(SacuvajEntitet sacuvajEntitet) {
		this.sacuvajEntitet = sacuvajEntitet;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getIzmeniEntitet()
	 */
	public IzmeniEntitet getIzmeniEntitet() {
		return izmeniEntitet;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setIzmeniEntitet(
	 * org.finir.fakturisanje.business.service.IzmeniEntitet)
	 */
	public void setIzmeniEntitet(IzmeniEntitet izmeniEntitet) {
		this.izmeniEntitet = izmeniEntitet;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getObrisiEntitet()
	 */
	public ObrisiEntitet getObrisiEntitet() {
		return obrisiEntitet;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setObrisiEntitet(
	 * org.finir.fakturisanje.business.service.ObrisiEntitet)
	 */
	public void setObrisiEntitet(ObrisiEntitet obrisiEntitet) {
		this.obrisiEntitet = obrisiEntitet;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getVratiListuEntiteta
	 * ()
	 */
	public VratiListuEntiteta getVratiListuEntiteta() {
		return vratiListuEntiteta;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setVratiListuEntiteta
	 * (org.finir.fakturisanje.business.service.VratiListuEntiteta)
	 */
	public void setVratiListuEntiteta(VratiListuEntiteta vratiListuEntiteta) {
		this.vratiListuEntiteta = vratiListuEntiteta;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getVratiListuFaktura
	 * ()
	 */
	public VratiListuFaktura getVratiListuFaktura() {
		return vratiListuFaktura;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setVratiListuFaktura
	 * (org.finir.fakturisanje.business.service.VratiListuFaktura)
	 */
	public void setVratiListuFaktura(VratiListuFaktura vratiListuFaktura) {
		this.vratiListuFaktura = vratiListuFaktura;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getVratiListuKomitenata
	 * ()
	 */
	public VratiListuKomitenata getVratiListuKomitenata() {
		return vratiListuKomitenata;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setVratiListuKomitenata
	 * (org.finir.fakturisanje.business.service.VratiListuKomitenata)
	 */
	public void setVratiListuKomitenata(
			VratiListuKomitenata vratiListuKomitenata) {
		this.vratiListuKomitenata = vratiListuKomitenata;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#getVratiListuUsluga()
	 */
	public VratiListuUsluga getVratiListuUsluga() {
		return vratiListuUsluga;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#setVratiListuUsluga
	 * (org.finir.fakturisanje.business.service.VratiListuUsluga)
	 */
	public void setVratiListuUsluga(VratiListuUsluga vratiListuUsluga) {
		this.vratiListuUsluga = vratiListuUsluga;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#sacuvajEntitet(java
	 * .lang.Object)
	 */
	public void sacuvajEntitet(Object entitet) {
		sacuvajEntitet.sacuvajEntitet(entitet);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#izmeniEntet(java.
	 * lang.Object)
	 */
	public void izmeniEntet(Object entitet) {
		izmeniEntitet.izmeniEntitet(entitet);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#obrisiEntitet(java
	 * .lang.Object)
	 */
	public void obrisiEntitet(Object entitet) {
		obrisiEntitet.obrisiEntitet(entitet);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#vratiListuUsluga(
	 * org.finir.fakturisanje.persistence.Preduzece)
	 */
	public List<Usluga> vratiListuUsluga(Preduzece preduzece) {
		return vratiListuUsluga.vratiSveUsluge(preduzece);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#vratiListuKomitenata
	 * (org.finir.fakturisanje.persistence.Preduzece)
	 */
	public List<Komitent> vratiListuKomitenata(Preduzece preduzece) {

		return vratiListuKomitenata.vratiListuKomitenata(preduzece);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#vratiListuFaktura
	 * (java.lang.Integer, org.finir.fakturisanje.persistence.Preduzece)
	 */
	public List<Faktura> vratiListuFaktura(Integer year, Preduzece preduzece) {
		return vratiListuFaktura.vratiListuFaktura(year, preduzece);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.finir.fakturisanje.business.service.KontrolerAL#logovanjePreduzeca
	 * (org.finir.fakturisanje.persistence.Preduzece)
	 */
	public Preduzece logovanjePreduzeca(Preduzece preduzece) {
		return logovanjePreduzeca.ulogujPreduzece(preduzece);
	}

	private GenerickiEAO generickiEAO;

	public GenerickiEAO getGenerickiEAO() {
		return generickiEAO;
	}

	public void setGenerickiEAO(GenerickiEAO generickiEAO) {
		this.generickiEAO = generickiEAO;
	}

	public <T> List<T> vratiListuEntiteta(Class<T> tipEntiteta) {
		return vratiListuEntiteta.vratiListuEntiteta(tipEntiteta);
	}

	public Integer vratiNoviBrojFakture(Integer year, Preduzece preduzece) {
		// TODO Auto-generated method stub
		return vratiNoviBrojFakture.vratiNoviBrojFakture(year, preduzece);
	}

	public Object spojObjekat(Object object) {

		return spojObjekat.spojObjekat(object);

	}

	public void odstampajFakturu(Faktura faktura) {
		// TODO Auto-generated method stub
		stampanjeFakture.odstampajFakturu(faktura);
	}
}
